using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using BL;
using BE;

public partial class MenuAdmin : BasePage
{
    #region Eventos
    protected void Page_Load(object sender, EventArgs e)
    {        
        if (!IsPostBack)
        {            
            CargarPerfil();
        }
    }
    protected void btn_Agregar_Click(object sender, EventArgs e)
    {
        try
        {
            if (lbOpcionesDisponibles.SelectedIndex > -1)
            {
                long  uidMenuId = Convert.ToInt64(lbOpcionesDisponibles.SelectedValue);
                long uidPerfilId = Convert.ToInt64(ddlPerfiles.SelectedValue);
                PerfilBO.InsertarPerfilUsuario(uidPerfilId, uidMenuId);

                CargarOpciones();
                if (uidPerfilId.ToString() == ((Usuario)Session[Constans.SessionUsuario.ToString()]).PerfilId.ToString())
                    this.Master.CargarMenu(uidPerfilId);
            }
        }
        catch (ManagerBusinessException)
        {
            ShowErrorMessage();
        }
        catch (Exception ex)
        {
            Publish(ex, String.Empty);
            ShowErrorMessage();
        }
    }
    protected void btn_Eliminar_Click(object sender, EventArgs e)
    {
        try
        {
            if (lbOpcionesAsociadas.SelectedIndex > -1)
            {
                long uidMenuId = Convert.ToInt64(lbOpcionesAsociadas.SelectedValue);
                long uidPerfilId = Convert.ToInt64(ddlPerfiles.SelectedValue);
                PerfilBO.EliminarPerfilUsuario(uidPerfilId, uidMenuId);

                CargarOpciones();
                if (uidPerfilId.ToString() == ((Usuario)Session[Constans.SessionUsuario.ToString()]).PerfilId.ToString())
                    this.Master.CargarMenu(uidPerfilId);
            }
        }
        catch (ManagerBusinessException)
        {
            ShowErrorMessage();
        }
        catch (Exception ex)
        {
            Publish(ex, String.Empty);
            ShowErrorMessage();
        }
    }
    protected void ddlPerfiles_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddlPerfiles.SelectedValue == String.Empty)
        {
            lbOpcionesAsociadas.Items.Clear();
            lbOpcionesDisponibles.Items.Clear();
        }
        else
            CargarOpciones();
    }
    #endregion

    #region Metodos
    public void CargarPerfil()
    {
        try
        {
            DataTable ds = PerfilBO.ObtenerPerfiles(String.Empty);
            ddlPerfiles.DataSource = ds;
            ddlPerfiles.DataTextField = "Nombre";
            ddlPerfiles.DataValueField = "PerfilId";
            ddlPerfiles.DataBind();
            ddlPerfiles.Items.Insert(0, new ListItem("SELECCIONE PERFIL", String.Empty));
        }
        catch (ManagerBusinessException)
        {
            ShowErrorMessage();
        }
        catch (Exception ex)
        {
            Publish(ex, String.Empty);
            ShowErrorMessage();
        }
    }
    private void CargarOpciones()
    {
        try
        {
            long uidPerfilId = Convert.ToInt64(ddlPerfiles.SelectedValue);
            DataSet dsOpcionesAsociadas = PerfilBO.ObtenerMenuXPerfilId(uidPerfilId);

            if (dsOpcionesAsociadas != null)
            {
                DataView dv = new DataView(dsOpcionesAsociadas.Tables[1]);
                dv.Sort = "Nombre ASC";
                lbOpcionesAsociadas.DataSource = dv;
                lbOpcionesAsociadas.DataTextField = "Nombre";
                lbOpcionesAsociadas.DataValueField = "MenuId";
                lbOpcionesAsociadas.DataBind();
            }
            else
            {
                lbOpcionesAsociadas.SelectedIndex = 0;
                if (lbOpcionesAsociadas.SelectedIndex >= 0)
                    lbOpcionesAsociadas.Items.Clear();
            }

            DataTable dsOpcionesDisponibles = PerfilBO.ObtenerMenuDisponibleXPerfilId(uidPerfilId);
            if (dsOpcionesDisponibles != null)
            {
                lbOpcionesDisponibles.DataSource = dsOpcionesDisponibles;
                lbOpcionesDisponibles.DataTextField = "Nombre";
                lbOpcionesDisponibles.DataValueField = "MenuId";
                lbOpcionesDisponibles.DataBind();
            }
            else
            {
                lbOpcionesDisponibles.SelectedIndex = 0;
                if (lbOpcionesDisponibles.SelectedIndex >= 0)
                    lbOpcionesDisponibles.Items.Clear();
            }
        }
        catch (ManagerBusinessException)
        {
            ShowErrorMessage();
        }
        catch (Exception ex)
        {
            Publish(ex, String.Empty);
            ShowErrorMessage();
        }
    }
    #endregion
}
